home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Source / GNU / debug / Common / RelocManager.h < prev    next >
Text File  |  1994-11-29  |  2KB  |  73 lines

  1. #import <objc/Object.h>
  2.  
  3. #import <mach/mach.h>
  4. #import <mach-o/loader.h>
  5.  
  6. typedef struct _Reloc {
  7.     pointer_t         address;
  8.     vm_size_t        size;
  9.     pointer_t        data;
  10.     vm_address_t    maxAddress;
  11.     long        displacement;
  12.     pointer_t        maxData;
  13.     struct {
  14.         unsigned short readIn : 1;
  15.     } rFlags;
  16. } Reloc;
  17.  
  18. #define WARPM(m, p) \
  19.     ((typeof(p))[(m) pointerFor: (p) withSize: sizeof(*(p))])
  20.     
  21. #define WARP(p) WARPM(regionManager, p)
  22.     
  23. #define WARPIDM(m, theID) \
  24.     ([(m) pointerForID: (id)(theID)])
  25.  
  26. #define WARPID(theID) WARPIDM(regionManager, theID)
  27.     
  28. #define UNWARPM(m, p) \
  29.     ((typeof(p))[(m) originalPointerFor: (p)])
  30.     
  31. #define UNWARP(p) UNWARPM(regionManager, (p))
  32.     
  33. #define WARPSTRINGM(m, s) ((char *)[(m) pointerForString: (s)])
  34.  
  35. #define WARPSTRING(s) WARPSTRINGM(regionManager, s)
  36.     
  37. @interface RelocManager : Object
  38. {
  39.     void *relocs;
  40.     int numRelocs;
  41.     int relocSize;
  42.     struct _rmFlags {
  43.     unsigned short invalid : 1;
  44.     unsigned short shouldSortRelocs : 1;
  45.     } rmFlags;
  46.     Reloc *lastReloc;
  47. }
  48.  
  49. -(void *)pointerFor: (const void *)pointer;
  50. -(void *)pointerFor: (const void *)pointer withSize: (int)size;
  51. -(char *)pointerForString: (const char *)pointer isNullTerminated: (BOOL *)isNT;
  52. -(char *)pointerForString: (const char *)string;
  53. -(id)pointerForID: (const id)pointer;
  54. -(void *)originalPointerFor: (const void *)pointer;
  55. -(int)getDataAt: (const void *)start for: (int)numBytes into: (void *)data;
  56. -(struct mach_header **)getMachHeaders;
  57. -(struct mach_header **)getMachHeadersWithNames: (char ***)names;
  58. -(struct mach_header *)getMachHeader;
  59. -(void *)getSectData: (STR)segName section: (STR)sectName size: (int *)pSize forHeader: (struct mach_header *)header;
  60. -(void *)getSectData: (STR)segName section: (STR)sectName size: (int *)pSize;
  61. -(const struct section *)getSeg: (STR)segName sect: (STR)sectName;
  62. -invalidate;
  63. -(void)readInAllRelocs;
  64. -(Reloc *)relocFor: (const void *)pointer;
  65. -(Reloc *)oldRelocFor: (const void *)pointer;
  66. -(BOOL)readInReloc: (Reloc *)reloc;
  67. -(const struct section *)firstSection;
  68. -(unsigned)getMaximumAddress;
  69. -(unsigned)getMaximumAddressForHeader: (struct mach_header *)header;
  70. -(unsigned)getMaximumTextAddress;
  71. -(unsigned)getMaximumDataAddress;
  72.  
  73. @end